﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class Admin_QuanLyThamSo : System.Web.UI.Page
{
    ThamSoCtr thamSoCtr = new ThamSoCtr();
    DonDatHangCtr donDatHangCtr = new DonDatHangCtr();
    void layThamSo()
    {
        gvSanPham.DataSource = thamSoCtr.layBangThamSo();
        gvSanPham.DataBind();
        MultiView1.ActiveViewIndex = 0;
    }
    public void checkAlreadyLogin()
    {
        if (Session["UserID"].ToString() == null)
            Response.Redirect("Login.aspx");
    }
    private void layNgay()
    {

        var list = new List<string>();
        list.Add("Chọn Ngày ");
        for (int i = 1; i <= 31; i++)
        {
            list.Add(i.ToString());
        }
        dlNgay.DataSource = list;
        dlNgayKT.DataSource = list;
        dlNgay.DataBind();
        dlNgayKT.DataBind();
    }
    private void layThang()
    {
        var list = new List<string>();
        list.Add("Chọn Tháng ");
        for (int i = 1; i <= 12; i++)
        {
            list.Add(i.ToString());
        }
        dlThang.DataSource = list;
        dlThang.DataBind();
        dlThangKT.DataSource = list;
        dlThangKT.DataBind();
    }
    private void layNam()
    {
        var list = new List<string>();
        list.Add("Chọn Năm ");
        for (int i = int.Parse(DateTime.Now.Year.ToString()); i >= int.Parse(DateTime.Now.Year.ToString()) - 25; i--)
        {
            list.Add(i.ToString());
        }
        dlNam.DataSource = list;
        dlNam.DataBind();
        dlNamKT.DataSource = list;
        dlNamKT.DataBind();
    }
    private bool kiemtraNgay(string ngay)
    {
        bool flag = true;
        try
        {
            DateTime.Parse(ngay);
        }
        catch (Exception ex)
        {
            lbNgay.Text = "Ngày không đúng.";
            // return false;
            flag = false;
        }
        // return true;
        return flag;

    }
    private bool kiemtraNgayKT(string ngay)
    {
        bool flag = true;
        try
        {
            DateTime.Parse(ngay);
        }
        catch (Exception ex)
        {
            lbNgayKT.Text = "Ngày không đúng.";
            // return false;
            flag = false;
        }
        // return true;
        return flag;

    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            checkAlreadyLogin();
            layThamSo();
            layNgay();
            layThang();
            layNam();
        }
    }
    protected void gvSanPham_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvSanPham.PageIndex = e.NewPageIndex;
        layThamSo();
    }
    protected void gvSanPham_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        DataTable DonDatHang = donDatHangCtr.laydondathang_tatca();
        string maThamSo = gvSanPham.Rows[e.RowIndex].Cells[0].Text;
            EThamSo thamSo=thamSoCtr.layThamSo(maThamSo);
        for (int i = 0; i < DonDatHang.Rows.Count; i++)
        {
            DateTime ngayLap = DateTime.Parse(DonDatHang.Rows[i]["NgayLap"].ToString());
            
            
            if (ngayLap >= thamSo.NgayBatDau && ngayLap <= thamSo.NgayKetThuc)
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
               "alert('Có Xuất Hàng Trong Thời Gian Khuyến Mãi Này Nên Không Thể Xóa Tham Số Này !');window.location=\"QuanLyThamSo.aspx\"", true);
                return;
                
            }
            
        }
        bool flag = thamSoCtr.DeleteThamSo(maThamSo);
        if (flag)
        {
            Response.Write("<script >alert('Xóa tham số thành công');window.location=\"QuanLyThamSo.aspx\"</script>");
        }
        else
        {
            Response.Write("<script >alert('Xóa tham số thất bại');window.location=\"QuanLyThamSo.aspx\"</script>");
        }
    }
    protected void btthem_Click(object sender, EventArgs e)
    {
         DataTable BangThamSo= thamSoCtr.layBangThamSo();
         EThamSo TS = new EThamSo();
         TS.NgayKetThuc = DateTime.Parse( BangThamSo.Rows[BangThamSo.Rows.Count - 1]["NgayKT"].ToString());
        EThamSo thamSo = new EThamSo();
        string ngayBatDau = dlThang.Text.ToString() + "/" + dlNgay.Text.ToString() + "/" + dlNam.Text.ToString();
        if (kiemtraNgay(ngayBatDau))
        {
            if (DateTime.Parse(ngayBatDau) > TS.NgayKetThuc)
            {
                thamSo.NgayBatDau = DateTime.Parse(ngayBatDau);
                string ngayKetThuc = dlThangKT.Text.ToString() + "/" + dlNgayKT.Text.ToString() + "/" + dlNamKT.Text.ToString();
                if (kiemtraNgayKT(ngayKetThuc))
                {
                    if (thamSo.NgayBatDau < DateTime.Parse(ngayKetThuc))
                    {
                        thamSo.NgayKetThuc = DateTime.Parse(ngayKetThuc);
                        thamSo.MaThamSo = txtMaThamSo.Text.Trim();
                        thamSo.SoLan = txttenqc.Text.Trim();
                        thamSo.GiaTri = txtGiaTri.Text.Trim();
                        thamSo.YNghia = txtYNghia.Text.Trim();
                        bool flag = thamSoCtr.InsertThamSo(thamSo);
                        if (flag)
                        {
                            Response.Write("<script>alert('Thêm tham số thành công');window.location=\"QuanLyThamSo.aspx\"</script>");
                        }
                        else
                        {
                            Response.Write("<script>alert('Thêm tham số thất bại');window.location=\"QuanLyThamSo.aspx\"</script>");
                        }
                    }
                    else
                    {
                        string ngayKetThuc1 = dlNgayKT.Text.ToString() + "/" + dlThangKT.Text.ToString() + "/" + dlNamKT.Text.ToString();
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
                        "alert('Ngày bắt đầu "+thamSo.NgayBatDau.Day+"/"+thamSo.NgayBatDau.Month+"/"+thamSo.NgayBatDau.Year+" phải nhỏ hơn ngày kết thúc "+ngayKetThuc1+" !');", true);
                        //lbLoiGiaTri.Text = "Ngày bắt đầu phải nhỏ hơn ngày kết thúc!";
                    }


                }
                
            }
            else
            {
                string ngayBatDau1 = dlNgay.Text.ToString() + "/" + dlThang.Text.ToString() + "/" + dlNam.Text.ToString();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
                "alert('Ngày bắt đầu của khuyến mãi lần này "+ngayBatDau1+" phải lớn hơn ngày kết thúc của khuyến mãi lần trước "+TS.NgayKetThuc.Day+"/"+TS.NgayKetThuc.Month+"/"+TS.NgayKetThuc.Year+" !');", true);
            }
        }
       
        

    }
    protected void gvSanPham_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton lbt = (LinkButton)e.Row.Cells[6].Controls[1];
            lbt.OnClientClick = "if(!confirm('Bạn có muốn xóa tham số :" + Server.HtmlDecode(e.Row.Cells[0].Text) + " này không?'))return false";
        }
    }
    protected void btThemMoi_Click(object sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 1;
        btCapNhat.Visible = false;
    }
    //Dư
    protected void gvSanPham_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        //gvSanPham.EditIndex = -1;
        //layThamSo();
    }
    protected void gvSanPham_RowEditing(object sender, GridViewEditEventArgs e)
    {
        //gvSanPham.EditIndex = e.NewEditIndex;
        //layThamSo();
    }
    protected void gvSanPham_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
      //  string maThamSo = gvSanPham.DataKeys[e.RowIndex].Value.ToString();
      //  string tenThamSo = ((TextBox)gvSanPham.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
        
      //  string YNghia = ((TextBox)gvSanPham.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
      //  string giaTri = ((TextBox)gvSanPham.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
      //  double Num;
      //  if (double.TryParse(giaTri.Trim(), out Num))
      //  {
      //      EThamSo ThamSo = new EThamSo();
      //      ThamSo.MaThamSo = maThamSo;
      //      ThamSo.TenThamSo = tenThamSo;
      //      ThamSo.GiaTri = giaTri;
      //      ThamSo.YNghia = YNghia;

      //      bool flag = thamSoCtr.UpdateThamSo(ThamSo);
      //      if (flag)
      //      {
      //          Response.Write("<script>alert('Cập nhật tham số thành công');window.location=\"QuanLyThamSo.aspx\"</script>");
      //      }
      //      else
      //      {
      //          Response.Write("<script>alert('Cập nhật tham số thành công');window.location=\"QuanLyThamSo.aspx\"</script>");
      //      }

      //      gvSanPham.EditIndex = -1;
      //      layThamSo();
      //  }
      //  else
      //  {
      //      ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
      //"alert('Bạn phải nhập giá trị!');", true);
      //  }
        
    }
    protected void gvSanPham_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        try
        {
            if (e.CommandName.Equals("Edit"))
            {
                btthem.Visible = false;
                string maTS = e.CommandArgument.ToString();
                EThamSo ThamSo = thamSoCtr.layThamSo(maTS);
                //An Hien Cac Nut
                 DataTable DonDatHang = donDatHangCtr.laydondathang_tatca();
                 for (int i = 0; i < DonDatHang.Rows.Count; i++)
                 {
                     DateTime ngayLap = DateTime.Parse(DonDatHang.Rows[i]["NgayLap"].ToString());
                     if (ngayLap >= ThamSo.NgayBatDau && ngayLap <= ThamSo.NgayKetThuc)
                     {
                         ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
                        "alert('Có Xuất Hàng Trong Thời Gian Khuyến Mãi Này Nên Không Thể Sửa Tham Số Này !');window.location=\"QuanLyThamSo.aspx\"", true);
                         return;
                         

                     }
                    
                 }
                 MultiView1.ActiveViewIndex = 1;
                 //Dua DL len man hinh
                 txtGiaTri.Text = ThamSo.GiaTri;
                 txtMaThamSo.Text = ThamSo.MaThamSo;
                 txttenqc.Text = ThamSo.SoLan;
                 txtYNghia.Text = ThamSo.YNghia;
                 dlNgay.SelectedValue = ThamSo.NgayBatDau.Day.ToString();
                 dlThang.SelectedValue = ThamSo.NgayBatDau.Month.ToString();
                 dlNam.SelectedValue = ThamSo.NgayBatDau.Year.ToString();
                 dlNgayKT.SelectedValue = ThamSo.NgayKetThuc.Day.ToString();
                 dlThangKT.SelectedValue = ThamSo.NgayKetThuc.Month.ToString();
                 dlNamKT.SelectedValue = ThamSo.NgayKetThuc.Year.ToString();
                //hdNgayKT.Value = ThamSo.NgayKetThuc.ToShortDateString();
            }

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
    }
    protected void btCapNhat_Click(object sender, EventArgs e)
    {
        EThamSo ThamSo = new EThamSo();
        ThamSo.MaThamSo = txtMaThamSo.Text.Trim().ToString();
        ThamSo.GiaTri = txtGiaTri.Text.Trim().ToString();
        ThamSo.SoLan = txttenqc.Text.Trim().ToString();
        ThamSo.YNghia = txtYNghia.Text.Trim().ToString();
        string ngayBD=dlThang.Text.ToString() + "/" + dlNgay.Text.ToString() + "/" + dlNam.Text.ToString();
        
        string ngayKT = dlThangKT.Text.ToString() + "/" + dlNgayKT.Text.ToString() + "/" + dlNamKT.Text.ToString();
        if(kiemtraNgay(ngayBD))
        {
            ThamSo.NgayBatDau = DateTime.Parse(ngayBD);
            if (kiemtraNgayKT(ngayKT))
            { 
                      ThamSo.NgayKetThuc = DateTime.Parse(ngayKT);
                      //Lay Ngay Ket Thuc Cua Tham So Truoc Do
                int vitri;
                DataTable BangThamSo = thamSoCtr.layBangThamSo();
                for (int i=0;i<BangThamSo.Rows.Count;i++)
                {
                    string maTS=BangThamSo.Rows[i]["MaThamSo"].ToString().Trim();
                      if (maTS==ThamSo.MaThamSo)
                      {
                           vitri=i;
                           if (vitri < BangThamSo.Rows.Count-1)
                           {
                               hdNgayKT.Value = BangThamSo.Rows[vitri - 1]["NgayKT"].ToString();
                               hdNgayBD.Value = BangThamSo.Rows[vitri + 1]["NgayBD"].ToString();
                           }
                           hdNgayKT.Value = BangThamSo.Rows[vitri - 1]["NgayKT"].ToString();
                           hdNgayBD.Value = "";
                       }
                }
                if (hdNgayBD.Value != "" && hdNgayKT.Value != "")//Neu tham so nam giua
                {
                    DateTime ngaykt = DateTime.Parse(hdNgayKT.Value);
                    DateTime ngaybd = DateTime.Parse(hdNgayBD.Value);

                    if (ngaykt < ThamSo.NgayBatDau && ThamSo.NgayKetThuc < ngaybd)
                    {

                        if (ThamSo.NgayBatDau <= ThamSo.NgayKetThuc)
                        {
                            bool flag = thamSoCtr.UpdateThamSo(ThamSo);
                            if (flag)
                            {
                                Response.Write("<script>alert('Cập nhật tham số thành công');window.location=\"QuanLyThamSo.aspx\"</script>");
                            }
                            else
                            {
                                Response.Write("<script>alert('Cập nhật tham số thất bại');window.location=\"QuanLyThamSo.aspx\"</script>");
                            }
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
                            "alert('Ngày bắt đầu phải nhỏ hơn ngày kết thúc "+ThamSo.NgayKetThuc.Day+"/"+ThamSo.NgayKetThuc.Month+"/"+ThamSo.NgayKetThuc.Year+" !');", true);
                            //lbLoiGiaTri.Text = "Ngày bắt đầu phải nhỏ hơn ngày kết thúc!";
                        }


                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
                          "alert('Ngày Bắt Đầu Của Lần Này Phải Lớn Hơn Ngày Kết Thúc của Lần Trước " + ngaykt.Day+"/"+ngaykt.Month+"/"+ngaykt.Year+ ". Ngày Kết Thúc Của Lần Này Phải Nhỏ Hơn Ngày Bắt Đầu của Lần Sau " + ngaybd.Day+"/"+ngaybd.Month+"/"+ngaybd.Year + " !');", true);
                        //Response.Redirect();
                    }
                }
                if (hdNgayBD.Value == "" && hdNgayKT.Value != "")//Neu tham so la dong cuoi cung
                {
                    DateTime ngaykt = DateTime.Parse(hdNgayKT.Value);
                    

                    if (ngaykt < ThamSo.NgayBatDau)
                    {

                        if (ThamSo.NgayBatDau <= ThamSo.NgayKetThuc)
                        {
                            bool flag = thamSoCtr.UpdateThamSo(ThamSo);
                            if (flag)
                            {
                                Response.Write("<script>alert('Cập nhật tham số thành công');window.location=\"QuanLyThamSo.aspx\"</script>");
                            }
                            else
                            {
                                Response.Write("<script>alert('Cập nhật tham số thất bại');window.location=\"QuanLyThamSo.aspx\"</script>");
                            }
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
                            "alert('Ngày bắt đầu phải nhỏ hơn ngày kết thúc "+ThamSo.NgayKetThuc.Day+"/"+ThamSo.NgayKetThuc.Month+"/"+ThamSo.NgayKetThuc.Year+" !');", true);
                            //lbLoiGiaTri.Text = "Ngày bắt đầu phải nhỏ hơn ngày kết thúc!";
                        }


                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "alert",
                          "alert('Ngày Bắt Đầu Của Lần Này Phải Lớn Hơn Ngày Kết Thúc của Lần Trước " + ngaykt.Day+"/"+ngaykt.Month+"/"+ngaykt.Year + " !');", true);
                        //Response.Redirect();
                    }
                }

            }
        }
    }
}